{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ada\n",
      "babbage\n",
      "curie\n",
      "text-davinci-003\n",
      "llama1_7B\n",
      "llama2_7B\n",
      "llama1_13B\n",
      "llama2_13B\n",
      "llama1_30B\n",
      "llama1_70B\n",
      "llama2_70B\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/var/folders/4z/0371zfqj5mx0rlct4r3qclfm0000gn/T/ipykernel_82941/3800116730.py:258: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n",
      "  plt.tight_layout()\n"
     ]
    },
    {
     "data": {
      "image/png": "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8HW8TqeTadOmedvff//9JCUlVWKPBYLiuZJkt7bJrVCitYiPP/6YH374gddff50ff/wRRVEYMWIEDofjktedOHGC1157rZJ66T98He/kyZOZP38+b775JvPmzSMiIoKRI0eSl5dXyT0XCApzJclurZNbVVArsNvtaqdOndTvv//eW5aTk6O2b99eXbx4cYnXybKs3nPPPeqDDz6otmzZUj127FhldLfc+Dreo0ePqvHx8epff/1VqP2AAQPUDRs2VEaXBYJiuZJktzbKrViJ1hL27dtHQUEBvXr18paFhITQpk0btmzZUuJ1M2fOxOl08vjjj1dGN/2Gr+Ndv349wcHBXHPNNYXar1q1qtA9BILK5kqS3doot0KJ1hJOnToFQL169QqVR0VFeesuZteuXXzxxRdMnToVrVZb4X30J76ONyUlhYYNG7J8+XKGDx/O1VdfzciRI0lOTq6U/goEJXElyW5tlFuhRGsJVqsVoFBScwCj0Yjdbi/S3mKxMHbsWMaOHUuTJk0qo4t+xdfx5ufnc+TIET7++GOef/55PvnkE3Q6Hffeey9nz56tlD4LBMVxJclubZRboURrCZ78qRcfztvtdsxmc5H2//3vf4mLi+Puu++ulP75G1/Hq9PpyM/PZ/r06fTp04f27dszffp0ABYsWFDxHRYISuBKkt3aKLfVJim3oHx4tkfS09Np1KiRtzw9PZ34+Pgi7efNm4fBYKBTp04AyLIMwNChQ3niiSd44oknKqHXZcfX8cbExKDT6WjWrJm3zGQy0bBhwxrjGiConVxJslsb5VYo0VpCq1atCAoKIiEhwfvlzM3NZe/evdx///1F2i9fvrzQ3zt37mTcuHF89tlntGzZslL6XB58HW+3bt1wuVwkJibSrl07AGw2G8eOHePGG2+s1L4LBBdyJclubZRboURrCQaDgfvvv593332XiIgIGjRowNSpU4mJiWHw4MHIskxmZibBwcGYTCYaN25c6HrPoX79+vUJCwurghH4hq/j7dq1K7179+bf//43r732GmFhYXzwwQdotVpuueWWqh6O4ArmSpLdWim3Ve1jI/AfLpdLfeedd9SePXuqHTt2VEeOHOn1HTt27JjasmVLdd68ecVeu2nTphrja+bB1/Hm5eWpkyZNUnv06KF26NBBfeSRR9SDBw9WVfcFAi9XkuzWNrmVVFVV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",
      "text/plain": [
       "<Figure size 500x200 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "llama2_7B\n",
      "llama2_7B_chat\n",
      "llama2_13B\n",
      "llama2_13B_chat\n",
      "llama2_70B\n",
      "llama2_70B_chat\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/var/folders/4z/0371zfqj5mx0rlct4r3qclfm0000gn/T/ipykernel_82941/3800116730.py:332: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
      "  ax[1].set_yticklabels(\n",
      "/var/folders/4z/0371zfqj5mx0rlct4r3qclfm0000gn/T/ipykernel_82941/3800116730.py:356: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
      "  ax[2].set_yticklabels(\n",
      "/var/folders/4z/0371zfqj5mx0rlct4r3qclfm0000gn/T/ipykernel_82941/3800116730.py:393: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
      "  ax[0].set_yticklabels(\n"
     ]
    },
    {
     "data": {
      "image/png": "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58+nVq1avP3220aPpbjvzsnJSa8xgoLG8v4nIHXr1k137TInJ4fjx4/z0UcfUbNmTen1MTGp7xVn6fVdEnIxFEVBpVIRFhamex0eHq47QOHh4XTv3p19+/bRu3dvg8u1s7PDycmJp59+mj///JNhw4YRFBTEsmXLGDJkiCTjCjp06BDt27enVq1aesvt7e1p3Lix7nWzZs3Izs5mypQpvP/++9SoUfnH3ZVHbGws6enptG/fXi+mo0eP6l47Ozvrxfzoo4+SlJTE8uXLTdJAFffdeXp6kpaWprddWloa9erV0712c3PTi7NFixacOXOGtWvXSkI2ManvFWfp9V0Gdd3nwoULwF8jqZX/zSqqKIreryU7OzsCAgL0Dlhp5RXSarVAwWjI8+fPc/DgQTZs2MCYMWPYsGFDld4zaEtOnTpFu3btDNpWURQURdEdi6p04MABZsyYofdw9T///FPvIffFMWW8xX13bdu25cSJE3r1//fff6dt27Zmi1P8Rep7xVl6fZeE/D+vv/46mzdv1r3WaDS6xJyXl8fNmzeZPn06R44cYfny5Rw9epRHHnmkXOXZ2RV83X5+fly8eJHJkyfzwQcf8N577/Gvf/2L1q1bm+jT2bbY2NgigzKg4DtPTU0lNTWVlJQUjh07xuLFi+nSpQs1a9as8jj79etHamoqn376KQkJCXz99dds376dsWPH6rbJy8vTi/nQoUOsXr2aXr16mSSm4r67559/njt37hAWFkZcXBxhYWFkZWXpxZCdna2LMzk5md27d7Njxw6TxSn+IvW94iy9vkuXNTBhwgTu3r3Lu+++CxRU7MJrw/PmzcPT05Nnn32WrKwsIiIicHR0JDIyssTRgqWVFxYWhru7O87Oznz00Ud0794djUYjDVklpKWlFdvgXL9+nS5dugAFvRoeHh50796dSZMmVXWIADzyyCN89dVXfPjhh6xdu5aGDRvy73//m1atWum2OXHihF7MdevWpX///kyYMMEkMRX33dWoUYPIyEhmzZrF+vXr8fX1ZenSpXq3o+zZs0d36569vT2PPPIIY8eOLTLQSBif1PeKs/T6Xu2f9vTuu++yf/9+Nm/eTNOmTXXXjwFCQ0M5efIke/fu1S0rvPhf0j1oZZV3/Phx9u/fr9u+8Os3xoQjQgghrFe17rJ+6623iImJoXXr1mzfvp1z587p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r776ioiICMLDw8v8FWXK8oR10Gg0jBs3jpiYGN566y2OHz/OunXraNSoUan7FXbXFc7iVnjt60GHDx/m6tWrpZa1efPmEsckPPvsszzxxBNERkbqlnl6evLmm2/qemtu3LhRYtl//vkn7733HgAdOnRg+vTpeuvr1q0LwMyZMzl37hznzp0jOjqa06dPc+7cOZkG1sZIfbeM+m5zCdnR0ZGgoCCmTJnCV199RVBQEHPmzOHEiROsWbMGPz8/s5YnTE+j0XDv3r0if4VdUIW0Wm2x22VnZ+t+KQPUqVMHJycnjh07xunTp3X7FqdDhw566wtfP6jwXsz27dvz+++/6/0VDnxJTU3lwIEDxe7fpUsXANasWcMvv/yiW757927Onz8PQMuWLYvd98aNG4SEhJCdnY23tzeLFi0qcqtKYdzffPMNN27cQKPRMHXqVAICApg6dWqx5QrzkPpuO/Xdpq4hF3JxcWHIkCH06NGDjIwM3N3dcXJywtnZ2SLKE6a1ceNGvckHCr344ouEh4frXh8+fJh27doV2a5jx46sWbOGJk2akJCQwPz581m0aJHuPkeAO3fuFPve7dq1w97envz8fOzt7Yst//bt27rrWL1799aN9Czk7+9PixYtOH/+POvWraNHjx5Fypg4cSIHDx7k2rVrvPbaa7i5uaHVanX3hLZt25bevXsXG+OiRYu4du0aADdv3qR///5669evX89bb73Fd999R2xsLE899RQuLi5kZGSgVqvp27dvseUK85D6bjv13ebOkO/n4eFBo0aNqFWrllGSp7HLE5YtIiKCwMBAXF1dcXR0pHfv3rprXoWjRR/k5uZGq1atgIKGxtXVtcg227dvJzc3Fzs7O3r27FlsOX369AHgl19+Kbar7+GHH+bbb79l2LBhNGzYkNzcXFQqFS1atGDcuHGsWLGixPnTC+/XhILBOoXXzAr/8vPz8fHx4euvv+bvf/87rq6uaLVaAgICiIyM5KmnnirlWxPWSuq7+eu7Sinuar0QQgghqpRNnyELIYQQ1kISshBCCGEBJCELIYQQFkASshBCCGEBJCELIYQQFkASshBCCGEBJCELIYQQFkASshBCCGEBJCELIYQQFkASshBCCGEBJCELIYQQFkASshBCCGEB/h/SS4/rsChCHAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 500x200 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pickle\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "from collections import defaultdict\n",
    "\n",
    "import sys\n",
    "sys.path.append(\"..\")\n",
    "from data.small_context import get_datasets\n",
    "from data.metrics import calculate_crps\n",
    "\n",
    "sns.set(style=\"whitegrid\", font_scale=1)\n",
    "\n",
    "old_names = [\n",
    "    'ada',\n",
    "    'babbage',\n",
    "    'curie',\n",
    "    'text-davinci-003'\n",
    "]\n",
    "name_map = {\n",
    "    # \"arima\": \"ARIMA\",\n",
    "    'ada': \"Ada\",\n",
    "    'babbage': \"Babbage\",\n",
    "    'curie': \"Curie\",\n",
    "    'text-davinci-003':'Davinci',\n",
    "    \"llama1_7B\": \"LLaMA 7B\",\n",
    "    \"llama1_13B\": \"LLaMA 13B\",\n",
    "    \"llama1_30B\": \"LLaMA 30B\",\n",
    "    \"llama1_70B\": \"LLaMA 70B\",\n",
    "    \"llama2_7B\": \"LLaMA-2 7B\",\n",
    "    \"llama2_13B\": \"LLaMA-2 13B\",\n",
    "    \"llama2_70B\": \"LLaMA-2 70B\",\n",
    "    \"llama2_7B_chat\": \"LLaMA-2 7B (chat)\",\n",
    "    \"llama2_13B_chat\": \"LLaMA-2 13B (chat)\",\n",
    "    \"llama2_70B_chat\": \"LLaMA-2 70B (chat)\",\n",
    "}\n",
    "hue_order = ['SM-GP','N-BEATS','TCN','N-HiTS','ARIMA','GPT-3']#, 'LLaMA7B', 'LLaMA13B', 'LLaMA30B', 'LLaMA70B']\n",
    "nlls = defaultdict(list)\n",
    "crps = defaultdict(list)\n",
    "mae = defaultdict(list)\n",
    "datasets = get_datasets()\n",
    "for dsname,(train,test) in datasets.items():\n",
    "    pkl_fn = f\"../precomputed_outputs/darts/{dsname}.pkl\"\n",
    "    with open(pkl_fn,'rb') as f:\n",
    "        data_dict = pickle.load(f)\n",
    "\n",
    "    for model_name in old_names:\n",
    "\n",
    "        preds = data_dict[model_name]\n",
    "\n",
    "        if 'NLL/D' not in preds:\n",
    "            continue\n",
    "        nll = preds['NLL/D']\n",
    "        if model_name=='text-davinci-003-tuned':\n",
    "            model_name='GPT3'\n",
    "\n",
    "        if type(preds['samples']) == np.ndarray:\n",
    "            nlls[model_name].append(nll)\n",
    "            crps[model_name].append(calculate_crps(test.values,preds['samples'][:10],10))\n",
    "            tmae = np.abs(test.values-preds['median']).mean()/np.abs(test.values).mean()\n",
    "            mae[model_name].append(tmae)\n",
    "        else:\n",
    "            nlls[model_name].append(nll)\n",
    "            crps[model_name].append(calculate_crps(test.values,preds['samples'].values[:10],10))\n",
    "            tmae = np.abs(test.values-preds['median']).mean()/np.abs(test.values).mean()\n",
    "            mae[model_name].append(tmae)\n",
    "\n",
    "llama_models = [\n",
    "    \"llama1_7B\",\n",
    "    \"llama2_7B\",\n",
    "    \"llama2_7B_chat\",\n",
    "    \"llama1_13B\",\n",
    "    \"llama2_13B\",\n",
    "    \"llama2_13B_chat\",\n",
    "    \"llama1_30B\",\n",
    "    \"llama1_70B\",\n",
    "    \"llama2_70B\",\n",
    "    \"llama2_70B_chat\",\n",
    "]\n",
    "for dsname,(train,test) in datasets.items():\n",
    "    for model_name in llama_models:\n",
    "        if model_name in ['llama2_70B', 'llama2_70B_chat']:\n",
    "            fn = f'../precomputed_outputs/darts/llama_darts/{model_name}/darts-{dsname}/1.0_0.9_0.99_0.3_3_,_.pkl'\n",
    "        else:\n",
    "            fn = f'../precomputed_outputs/darts/llama_darts/{model_name}/darts-{dsname}/0.4_0.9_0.99_0.3_3_,_.pkl'\n",
    "        with open(fn,'rb') as f:\n",
    "            data_dict = pickle.load(f)\n",
    "\n",
    "        preds = data_dict#[model_name]\n",
    "\n",
    "        if 'NLL/D' not in preds:\n",
    "            continue\n",
    "        nll = preds['NLL/D']\n",
    "\n",
    "        if type(preds['samples']) == np.ndarray:\n",
    "            nlls[model_name].append(nll)\n",
    "            crps[model_name].append(calculate_crps(test.values,preds['samples'][:10],10))\n",
    "            tmae = np.abs(test.values-preds['median']).mean()/np.abs(test.values).mean()\n",
    "            mae[model_name].append(tmae)\n",
    "        else:\n",
    "            nlls[model_name].append(nll)\n",
    "            crps[model_name].append(calculate_crps(test.values,preds['samples'].values[:10],10))\n",
    "            tmae = np.abs(test.values-preds['median']).mean()/np.abs(test.values).mean()\n",
    "            mae[model_name].append(tmae)\n",
    "\n",
    "nlls = {k:np.array(v) for k,v in nlls.items()}\n",
    "crps = {k:np.array(v) for k,v in crps.items()}\n",
    "mae = {k:np.array(v) for k,v in mae.items()}\n",
    "\n",
    "# Update dataset keys by removing 'Dataset' substring\n",
    "dataset_keys = [key.replace('Dataset', '') for key in datasets.keys()]\n",
    "\n",
    "# fig, ax = plt.subplots(1, 1, figsize=(3, 3))\n",
    "# dfs = [pd.DataFrame({'Dataset':dataset_keys,'NLL/D':v,'Type':k}) for k,v in nlls.items()]\n",
    "# df = pd.concat(dfs)\n",
    "\n",
    "# df['Type'] = df['Type'].apply(lambda x: name_map[x])\n",
    "\n",
    "palette = sns.color_palette('Dark2', len(hue_order))\n",
    "palette = palette[:2] + palette[3:] + palette[2:3]\n",
    "\n",
    "mmlu_numbers = {\n",
    "    'ada': 0.238,\n",
    "    'babbage': 0.235,\n",
    "    'curie': 0.237,\n",
    "    'text-davinci-003': 0.569, \n",
    "    'llama1_7B': 0.351,\n",
    "    'llama2_7B': 0.453,\n",
    "    # 'llama2_7B_chat': 0.469,\n",
    "    'llama1_13B': 0.469,\n",
    "    'llama2_13B': 0.548,\n",
    "    # 'llama2_13B_chat': 0.469,\n",
    "    'llama1_30B': 0.578,\n",
    "    'llama1_70B': 0.634,\n",
    "    'llama2_70B': 0.689,\n",
    "    # 'llama2_70B_chat': 0.578,\n",
    "}\n",
    "\n",
    "df = []\n",
    "for k,nll in nlls.items():\n",
    "    if \"chat\" in k:\n",
    "        continue\n",
    "    print(k)\n",
    "    _crps, _mae = crps[k], mae[k]\n",
    "    # print(k,nll)\n",
    "    # print(list(datasets.keys()))\n",
    "    # for i in range(len(nll)):\n",
    "    d = {\n",
    "        # 'Dataset':list(datasets.keys()),\n",
    "        'MAE': np.mean(_mae),\n",
    "        'CRPS': np.mean(_crps),\n",
    "        'NLL/D': np.mean(nll), #nll[i],#np.mean(nll),\n",
    "        'Type':k,\n",
    "        'MMLU Accuracy': mmlu_numbers[k],\n",
    "    }\n",
    "    df.append(d)\n",
    "df = pd.DataFrame(df)\n",
    "\n",
    "\n",
    "host_name_map = {\n",
    "    'openai': 'OpenAI',\n",
    "    'cohere': 'Cohere',\n",
    "    'forefront': 'Forefront',\n",
    "    'alephalpha': 'Aleph Alpha',\n",
    "    'LLaMA': 'LLaMA'\n",
    "}\n",
    "\n",
    "def hostify(x):\n",
    "    if x in ['Ada','Babbage','Curie','Davinci']:\n",
    "        return 'openai-'+x\n",
    "    if 'LLaMA' in x:\n",
    "        return x.replace('LLaMA','LLaMA-')\n",
    "    return x\n",
    "\n",
    "df['Type'] = df['Type'].apply(lambda x: name_map[x])\n",
    "df['Type'] = df['Type'].apply(hostify)\n",
    "df['host'] = df['Type'].apply(lambda x: host_name_map[x.split(\"-\")[0]])\n",
    "\n",
    "fig, ax = plt.subplots(1, 2, figsize=(5, 2), gridspec_kw = {'wspace': 0.6})\n",
    "\n",
    "sns.regplot(\n",
    "    data=df,\n",
    "    x='MMLU Accuracy',\n",
    "    # x='Dataset',\n",
    "    y='NLL/D',\n",
    "    order=1,\n",
    "    # errorbar='se',\n",
    "    ax=ax[0], \n",
    "    scatter_kws={'color':'white'},\n",
    ")\n",
    "\n",
    "sns.scatterplot(\n",
    "    data=df,\n",
    "    x='MMLU Accuracy',\n",
    "    y='NLL/D',\n",
    "    hue='host',\n",
    "    palette='Dark2',\n",
    "    ax=ax[0],\n",
    ")\n",
    "ax[0].get_legend().remove()\n",
    "ax[0].set_ylim(4.2, 5.)\n",
    "ax[0].set_xlabel(ax[0].get_xlabel(), fontsize=14)\n",
    "ax[0].set_ylabel(ax[0].get_ylabel(), fontsize=14)\n",
    "\n",
    "sns.regplot(\n",
    "    data=df,\n",
    "    x='MMLU Accuracy',\n",
    "    # x='Dataset',\n",
    "    y='CRPS',\n",
    "    order=1,\n",
    "    # errorbar='se',\n",
    "    ax=ax[1], \n",
    "    scatter_kws={'color':'white'},\n",
    ")\n",
    "\n",
    "sns.scatterplot(\n",
    "    data=df,\n",
    "    x='MMLU Accuracy',\n",
    "    y='CRPS',\n",
    "    hue='host',\n",
    "    palette='Dark2',\n",
    "    ax=ax[1],\n",
    ")\n",
    "\n",
    "ax[1].set_xlabel(ax[1].get_xlabel(), fontsize=14)\n",
    "ax[1].set_ylabel(ax[1].get_ylabel(), fontsize=14)\n",
    "\n",
    "handles, labels = ax[1].get_legend_handles_labels()\n",
    "ax[1].legend(\n",
    "    handles=handles,\n",
    "    labels=labels,\n",
    "    # markerscale=1.5,\n",
    "    # bbox_to_anchor=(1.05, 1),\n",
    "    loc='upper right',\n",
    "    # borderaxespad=0.0,\n",
    "    columnspacing=0,\n",
    "    handletextpad=0.5,\n",
    "    fontsize=10,\n",
    "    frameon=True,\n",
    ")\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.savefig('outputs/mmlu_scaling.pdf', bbox_inches='tight')\n",
    "plt.show()\n",
    "\n",
    "\n",
    "df = []\n",
    "for k,nll in nlls.items():\n",
    "    if not \"llama\" in k:\n",
    "        continue\n",
    "    if 'llama1' in k:\n",
    "        continue\n",
    "    print(k)\n",
    "    for _mae, _crps, _nll in zip(mae[k], crps[k], nll):\n",
    "        df.append({\n",
    "            # 'Dataset':list(datasets.keys()),\n",
    "            'MAE': _mae,\n",
    "            'CRPS': _crps,\n",
    "            'NLL/D': _nll,\n",
    "            'Type':k,\n",
    "            'size': k.split('_')[1],\n",
    "            'is_chat': 'chat' in k\n",
    "        })\n",
    "df = pd.DataFrame(df)\n",
    "\n",
    "\n",
    "gpt_crps = defaultdict(list)\n",
    "datasets = get_datasets()\n",
    "for dsname,(train,test) in datasets.items():\n",
    "    fn = f'../precomputed_outputs/darts/gpt4/{dsname}.pkl'\n",
    "    with open(fn,'rb') as f:\n",
    "        data_dict = pickle.load(f)\n",
    "\n",
    "    for model_name in data_dict.keys():\n",
    "        if model_name not in ['text-davinci-003', 'gpt-4']:\n",
    "            continue\n",
    "\n",
    "        preds = data_dict[model_name]\n",
    "\n",
    "        if model_name=='text-davinci-003':\n",
    "            model_name='GPT-3'\n",
    "        else:\n",
    "            model_name='GPT-4'\n",
    "\n",
    "        if type(preds['samples']) == np.ndarray:\n",
    "            gpt_crps[model_name].append(calculate_crps(test.values,preds['samples'][:10],10))\n",
    "        else:\n",
    "            gpt_crps[model_name].append(calculate_crps(test.values,preds['samples'].values[:10],10))\n",
    "\n",
    "gpt_df = []\n",
    "for k,crps in gpt_crps.items():\n",
    "    for _crps in crps:\n",
    "        gpt_df.append({\n",
    "            'CRPS': _crps,\n",
    "            'Type':k\n",
    "        })\n",
    "gpt_df = pd.DataFrame(gpt_df)\n",
    "gpt_df['CRPS'] = gpt_df['CRPS'].astype('float')\n",
    "\n",
    "\n",
    "fig, ax = plt.subplots(1, 3, figsize=(5, 2), gridspec_kw = {'width_ratios': [1, 3, 3]})# gridspec_kw = {'wspace': 0.6})\n",
    "\n",
    "sns.barplot(\n",
    "    data=df,\n",
    "    x='size',\n",
    "    y='NLL/D',\n",
    "    hue='is_chat',\n",
    "    palette='Dark2',\n",
    "    errorbar='se',\n",
    "    errwidth=1,\n",
    "    ax=ax[1],\n",
    ")\n",
    "\n",
    "ax[1].set_xlabel('LLaMA Size')\n",
    "ax[1].get_legend().remove()\n",
    "ax[1].set_yticklabels(\n",
    "    ax[1].get_yticklabels(), \n",
    "    fontsize=9,\n",
    ")\n",
    "ax[1].set_xticklabels(\n",
    "    ax[1].get_xticklabels(), \n",
    "    fontsize=10,\n",
    ")\n",
    "ax[1].tick_params(pad=0)\n",
    "\n",
    "sns.barplot(\n",
    "    data=df,\n",
    "    x='size',\n",
    "    y='CRPS',\n",
    "    hue='is_chat',\n",
    "    palette='Dark2',\n",
    "    errorbar='se',\n",
    "    errwidth=1,\n",
    "    ax=ax[2],\n",
    ")\n",
    "\n",
    "ax[2].set_xlabel('LLaMA Size')\n",
    "ax[2].set_ylim([0.0, 0.265])\n",
    "ax[2].get_legend().remove()\n",
    "ax[2].set_yticklabels(\n",
    "    ax[2].get_yticklabels(), \n",
    "    fontsize=9,\n",
    ")\n",
    "ax[2].set_xticklabels(\n",
    "    ax[2].get_xticklabels(), \n",
    "    fontsize=10,\n",
    ")\n",
    "ax[2].tick_params(pad=0)\n",
    "\n",
    "handles, labels = ax[2].get_legend_handles_labels()\n",
    "labels = ['Base', 'Chat']\n",
    "ax[2].legend(\n",
    "    handles, labels, \n",
    "    loc='upper center', \n",
    "    ncol=2,\n",
    "    columnspacing=0.5,\n",
    "    handletextpad=0.5,\n",
    "    handlelength=1.0,\n",
    "    fontsize=10,\n",
    "    frameon=True,\n",
    ")\n",
    "\n",
    "palette[0] = \"#229c55\" #(0.2, 0.6, 0.2)\n",
    "palette[1] = \"#ad3603\" #(0.6, 0.2, 0.2)\n",
    "\n",
    "sns.barplot(\n",
    "    data=gpt_df,\n",
    "    x='Type',\n",
    "    y='CRPS',\n",
    "    # hue='is_chat',\n",
    "    palette=palette,\n",
    "    errorbar='se',\n",
    "    errwidth=1,\n",
    "    ax=ax[0],\n",
    ")\n",
    "\n",
    "ax[0].set_yticklabels(\n",
    "    ax[0].get_yticklabels(), \n",
    "    fontsize=9,\n",
    ")\n",
    "ax[0].set_xticklabels(\n",
    "    ax[0].get_xticklabels(), \n",
    "    fontsize=9,\n",
    "    rotation=45\n",
    ")\n",
    "ax[0].tick_params(pad=0)\n",
    "ax[0].set_xlabel('')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.savefig('outputs/alignment_effects.pdf', bbox_inches='tight')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
